/**
 * 获取dom辅助函数
 * @param {string} sel 选择器
 * @returns 只匹配到一个元素时返回该元素，匹配到多个元素时返回数组，没有匹配到则返回空数组
 */
function $(sel) {
    let res = document.querySelectorAll(sel)
    if (res.length === 1) {
        return res[0]
    }
    return res
}

/**
 * 获取16进制的字符串或者原字符串
 * @param {number | string} val
 * @returns 如果参数是一个数字则返回16进制，否则返回参数
 */
function getHex(val) {
    if (typeof val !== 'number') {
        return val
    }
    return '0x' + val.toString(16).replace('-', '')
}

/**
 * 获取一个内存项的html
 * @param {string} add 内存地址
 * @param {number | string} val 内存的值
 * @returns 返回一个memory-item的dom
 */
function getMemoryItem(add, val) {
    let dom = document.createElement('DIV')
    let addDom = document.createElement('DIV')
    let valDom = document.createElement('DIV')
    dom.className = `memory-item memory-${getHex(add)}`

    valDom.className = 'val'
    valDom.textContent = getHex(val)

    addDom.className = 'add'
    addDom.textContent = getHex(add)

    dom.appendChild(addDom)
    dom.appendChild(valDom)
    return dom
}

function setInfo(val) {
    $('.info .text').textContent = val
}
function setOutput(val) {
    $('.info .output').textContent = `${val}`
}
